// var OSS = require('ali-oss');
import OSS from "ali-oss";
import axios from './axios.ts'; // 导入axios

// 获取STS临时凭证的函数
async function getSTSToken() {
    try {
        const response = await axios.get('/sts/token'); // 需要后端提供STS接口
        return response.data;
    } catch (error) {
        console.error('获取STS Token失败:', error);
        throw new Error('无法获取上传凭证');
    }
}

export async function client() {
    try {
        const stsToken = await getSTSToken();

        return new OSS({
            endpoint: 'oss-cn-hangzhou.aliyuncs.com',
            accessKeyId: stsToken.accessKeyId,
            accessKeySecret: stsToken.accessKeySecret,
            stsToken: stsToken.securityToken,
            bucket: 'yangodofsc',
            region: 'oss-cn-hangzhou',
            secure: true // 使用HTTPS
        });
    } catch (error) {
        console.error('创建OSS客户端失败:', error);
        throw error;
    }
}

/*** 生成随机uuid*/
export function getFileNameUUID () {
    function rx() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
    }
    return `${+new Date()}_${rx()}${rx()}`
}

// 生成预签名URL的函数
export async function generatePresignedUrl(fileName) {
    try {
        const ossClient = await client();
        return await ossClient.signatureUrl(fileName, {
            expires: 3600, // 1小时有效期
            method: 'PUT'
        });
    } catch (error) {
        console.error('生成预签名URL失败:', error);
        throw error;
    }
}